Skip to content

DDD 分层架构

这两篇笔记讲的挺好的,你可以先看一下。

码农会所的一些关于 DDD 的理解和说明

  • 码农会所 - DDD 架构模式
  • DDD 脚手架:DDD 脚手架
    • 这个是码农会所小傅哥他自己写的一个DDD初始化项目脚手架,新建项目可以参考一下,不过具体还是看实际项目为主,也可以参考他,他使用的六边形架构,基本上很通用了。

实际项目中DDD 的使用和所见记录

依赖倒置是怎么做的,接口和实现具体在代码中是怎么体现的。

├── xxx-domain/                 # 领域层(内核)
│   └── repository/             # ← 接口定义在这里
│       └── IOrderRepository.java
│   └── service/
│       └── OrderService.java
│
├── xxx-infrastructure/         # 基础设施层
│   └── repository/             # ← 实现在这里
│       └── OrderRepository.java
│       └── po/OrderPO.java

关于 VO、DTO 等这些,在DDD 架构中,项目一般是怎么使用的, 我们通用的约定熟成是怎么做的。

对象全称活在哪一层用途
POPersistent Objectinfrastructure和数据库表一一对应,ORM(MyBatis)操作的载体
Entity领域实体domain领域模型的主体,有唯一标识、有业务行为
ValueObject(VO)值对象domain无唯一标识、靠属性判等的不变对象,如 Address、Money
DTOData Transfer Object应用层/接口层跨进程/跨层传输的数据包,无业务行为
Query/Command请求对象trigger/接口层入参封装(CQRS 风格分查询和命令)
VO(View Object)视图对象前端/接口层返回给页面的展示对象(注意:VO 一词有两个含义,看团队约定)